package com.wei.czz.common.utils;

import com.wei.czz.common.constant.RegexConstant;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.regex.Pattern;

/**
 * Created by IntelliJ IDEA.
 *
 * @author wei
 * date: 2022-08-24 21:49:22
 * className: RegexUtils 正则操作工具类
 * version: 1.0
 * description:
 */
public class RegexUtils {

    private static final Logger log = LoggerFactory.getLogger(RegexUtils.class);

    /**
     * 手机号脱敏操作
     * 前三后四
     * 如：输入 18812341234 输出 188****1234
     * @param phone 手机号
     * @return 脱敏结果
     */
    public static String phoneMask(String phone) {
        if (StringUtils.isEmpty(phone) || phone.length() != 11) {
            return phone;
        }
        return phone.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2");
    }

    /**
     * 邮箱号脱敏操作
     * 前一后一
     * 如：输入 123456789@qq.com 输出 1****9@qq.com
     * @param email 邮箱号
     * @return 脱敏结果
     */
    public static String emailMask(String email) {
        if (StringUtils.isEmpty(email)) {
            return email;
        }
        return email.replaceAll("(\\w).*(\\w)@(.*)", "$1****$2@$3");
    }

    /**
     * 判断字符串是否手机号
     * @param phone 手机号
     * @return true-是 false-不是
     */
    public static boolean isPhone(String phone) {
        if (StringUtils.isBlank(phone)) {
            log.error("判断字符串是否手机号，入参为空");
            return false;
        }
        return Pattern.matches(RegexConstant.PHONE_REGEX, phone);
    }

    /**
     * 判断字符串是否邮箱号
     * @param email 邮箱号
     * @return true-是 false-不是
     */
    public static boolean isEmail(String email) {
        if (StringUtils.isBlank(email)) {
            log.error("判断字符串是否邮箱号，入参为空");
            return false;
        }
        return Pattern.matches(RegexConstant.EMAIL_REGEX, email);
    }

    /**
     * 判断字符串是否ip地址
     * @param ip ip地址
     * @return true-是 false-不是
     */
    public static boolean isIp(String ip) {
        if (StringUtils.isBlank(ip)) {
            log.error("判断字符串是否ip，入参为空");
            return false;
        }
        return Pattern.matches(RegexConstant.IPv4_REGEX, ip);
    }
}
